package com.ego.admin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ego.admin.po.SysAdmin;
import com.ego.admin.vo.SysUserSearchVo;
import com.ego.common.vo.PageVo;

import java.util.List;
import java.util.Set;

/**
 * @program: ego
 * @description: 系统管理员
 * @author: KamTang
 * @create: 2022-11-11 11:29
 **/
public interface SysAdminService extends IService<SysAdmin> {
    /**
     * 根据用户名，查询系统管理员
     *
     * @param username 用户名
     * @return AdminEntity
     */
    SysAdmin queryByUserName(String username);

    /**
     * 查询用户的所有菜单ID
     *
     * @param userId 用户ID
     * @return 菜单ID
     */
    List<Long> queryAllMenuId(Long userId);

    /**
     * 搜索系统管理员
     *
     * @param search 搜索参数
     * @return 分页数据
     */
    PageVo<SysAdmin> search(SysUserSearchVo search);

    /**
     * 根据部门id获取该部门下总人数
     * @param departmentId 部门id
     * @return int
     */
    int countPeopleByDepartmentId(Long departmentId);

    /**
     * 保存
     * @param admin 管理员
     */
    void saveUser(SysAdmin admin);

    /**
     * 修改
     * @param admin 管理员
     */
    void update(SysAdmin admin);

    /**
     * 根据id查询所有权限
     * @param userId id
     * @return 权限列表
     */
    List<String> getAllPermsById(Long userId);

    /**
     * 获取用户权限列表
     * @param userId id
     * @return 无重复权限列表
     */
    Set<String> getUserPermissions(long userId);

    /**
     * 根据用户id获取该用户的所有菜单id
     * @param userId 用户id
     * @return 菜单id列表
     */
    List<Long> getMenuIdByUserId(Long userId);

    /**
     * 修改密码
     * @param userId 用户id
     * @param password 旧密码
     * @param newPassword 新密码
     * @return boolean
     */
    boolean updatePwd(Long userId, String password, String newPassword);
}
